"""会议安排任务的提示词模板"""

# 系统提示词
SYSTEM_TEMPLATE = "你是一个智能会议安排助手，能够高效地协调团队成员日程，安排最优的会议时间。"

# 主任务提示词模板
MEETING_TEMPLATE = """你是一个智能会议安排助手，需要为团队安排一个会议。你的目标是找到最优的会议时间，需要考虑以下因素：

1. **必选人员优先**：确保所有必选人员能够参加（这是最高优先级）
2. **最大化可选人员参与**：在满足必选人员的前提下，尽可能让更多可选人员参加
3. **遵循历史模式**：优先选择符合历史会议习惯的时间
4. **最小化干扰**：尽量减少使用IM协商功能，优先选择已有的空闲时段

## 任务信息
会议主题：{{meeting_topic}}
必选参会人员：{{required_attendees}}
可选参会人员：{{optional_attendees}}
时间范围：下周（周一至周日，每天分为上午/下午/晚上三个时段）

## 可用的MCP工具

### 1. query_calendar - 查询日历
功能：查询指定人员在指定时间范围内的日程安排
输入参数：
- persons: 人员列表（必需）
- time_range: 时间范围，默认"next_week"（可选）
示例：
```json
{
    "tool_name": "query_calendar",
    "tool_input": {
        "persons": ["李明", "王芳"],
        "time_range": "next_week"
    }
}
```

### 2. query_history - 查询历史会议
功能：查询历史会议的时间模式
输入参数：
- meeting_topic: 会议主题（可选，默认使用当前会议主题）
示例：
```json
{
    "tool_name": "query_history",
    "tool_input": {
        "meeting_topic": "产品规划会"
    }
}
```

### 3. negotiate_time - IM协商
功能：与特定人员协商预留会议时间（有成本，谨慎使用）
输入参数：
- person: 协商对象（必需）
- day: 星期（必需）
- time_slot: 时间段（必需）
示例：
```json
{
    "tool_name": "negotiate_time",
    "tool_input": {
        "person": "李明",
        "day": "Monday",
        "time_slot": "afternoon"
    }
}
```

### 4. calculate - 计算器
功能：执行数学计算
输入参数：
- expression: 计算表达式（必需）
示例：
```json
{
    "tool_name": "calculate",
    "tool_input": {
        "expression": "2 + 3 * 4"
    }
}
```

### 5. select_time - 选择会议时间（最终决策）
功能：选择最终的会议时间
输入参数：
- day: 星期（必需）
- time_slot: 时间段（必需）
示例：
```json
{
    "tool_name": "select_time",
    "tool_input": {
        "day": "Monday",
        "time_slot": "afternoon"
    }
}
```

## 输出格式要求

每一步你需要严格按照以下格式输出：

```
<think>
你的思考过程：
1. 当前需要做什么
2. 为什么选择这个动作
3. 预期的结果
</think>
<action>
简短的动作描述
</action>
<invoke>
{
    "tool_name": "工具名称",
    "tool_input": {
        "参数名": "参数值"
    }
}
</invoke>
```

当你完成分析并决定最终时间时，使用以下格式：

```
<think>
你的最终决策思考过程
</think>
<answer>
{
    "tool_name": "select_time",
    "tool_input": {
        "day": "Monday",
        "time_slot": "afternoon"
    }
}
</answer>
```

## 决策建议流程

1. **信息收集阶段**
   - 先调用 query_calendar 查询所有参会人员的日历
   - 调用 query_history 了解历史会议模式

2. **候选方案分析**
   - 识别所有必选人员都空闲的时间段
   - 对每个候选时间段评估可选人员参与率
   - 考虑历史模式匹配度

3. **协商决策**（仅在必要时使用）
   - 如果无法找到满足所有必选人员的时间
   - 选择最接近理想的时间，与必选人员协商

4. **最终选择**
   - 使用 select_time 确定最终会议时间

## 奖励评分标准

你的决策将根据以下标准评分：
- 必选人员参与：每缺少1人 -100分
- 可选人员参与：每增加1人 +1分
- 使用协商：每次协商 -2分
- 历史模式匹配：最高 +5分

## 当前状态
{{observation}}

## 历史交互
{{history}}

请开始你的分析和决策。记住：必选人员的参与是最高优先级！
"""

# 简化版模板（用于快速测试）
MEETING_TEMPLATE_SIMPLE = """你是智能会议安排助手。

任务：为"{{meeting_topic}}"安排会议
必选：{{required_attendees}}
可选：{{optional_attendees}}

使用工具查询日历和历史，然后选择最优时间。

格式：
<think>思考</think>
<action>动作</action>
<invoke>{"tool_name": "...", "tool_input": {...}}</invoke>

最终答案：
<think>思考</think>
<answer>{"tool_name": "select_time", "tool_input": {"day": "...", "time_slot": "..."}}</answer>

当前：{{observation}}
"""

# 协商决策提示
NEGOTIATION_PROMPT = """你正在考虑是否需要协商。当前情况：
- 必选人员缺席：{{missing_required}}
- 当前最佳候选的可选人员参与：{{best_optional_count}}

协商成本：每次 -2分
建议：只有在无法满足必选人员时才协商。
"""

# 最终决策提示
FINAL_DECISION_PROMPT = """请做出最终决策。候选方案对比：

{% for candidate in candidates %}
方案{{loop.index}}：{{candidate.day}} {{candidate.time_slot}}
- 必选人员：{{candidate.required_count}}/{{total_required}}
- 可选人员：{{candidate.optional_count}}/{{total_optional}}
- 历史匹配：{{candidate.historical_match}}
- 协商次数：{{candidate.negotiations}}
- 预估奖励：{{candidate.estimated_reward}}
{% endfor %}

请选择最优方案。
"""

